উদাহরণ সহ Circuit Breaker Pattern ব্যবহার

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) Circuit Breaker Pattern এবং Resilience4j Integration |
77
77

Circuit Breaker Pattern হল একটি গুরুত্বপূর্ণ ডিজাইন প্যাটার্ন, যা ডিস্ট্রিবিউটেড সিস্টেমে ফেইলিওর হ্যান্ডল করার জন্য ব্যবহৃত হয়। এটি একটি নির্দিষ্ট সময়ের জন্য ব্যর্থ সার্ভিস কলগুলিকে ব্লক করে এবং সার্ভিস রিকভারির সময় পুনরায় চেষ্টা করতে দেয়। Spring Boot-এ Resilience4j একটি জনপ্রিয় লাইব্রেরি যা Circuit Breaker Pattern বাস্তবায়ন করার জন্য ব্যবহৃত হয়।

নিচে একটি উদাহরণসহ Circuit Breaker Pattern Spring Boot ক্লায়েন্টে কিভাবে ব্যবহার করবেন তা দেখানো হলো।


ধাপ ১: Maven Dependency যোগ করুন

Spring Boot-এ Resilience4j ব্যবহার করার জন্য Maven ডিপেনডেন্সি যোগ করুন।

<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>1.7.1</version>
</dependency>

ধাপ ২: Application Properties-এ কনফিগারেশন

Circuit Breaker-এর জন্য কনফিগারেশন সেট করুন।

resilience4j.circuitbreaker.instances.myService.register-health-indicator=true
resilience4j.circuitbreaker.instances.myService.sliding-window-size=5
resilience4j.circuitbreaker.instances.myService.failure-rate-threshold=50
resilience4j.circuitbreaker.instances.myService.wait-duration-in-open-state=5000
resilience4j.circuitbreaker.instances.myService.permitted-number-of-calls-in-half-open-state=3

বিবরণ:

  • failure-rate-threshold: ব্যর্থতার হার, যা Circuit Breaker ওপেন করবে। (%)
  • wait-duration-in-open-state: কতক্ষণ ওপেন অবস্থায় থাকবে। (মিলিসেকেন্ড)
  • sliding-window-size: সর্বশেষ কতটি রিকোয়েস্ট পর্যবেক্ষণ করবে।
  • permitted-number-of-calls-in-half-open-state: হাফ-ওপেন অবস্থায় অনুমোদিত কলের সংখ্যা।

ধাপ ৩: সার্ভিস লেয়ারে Circuit Breaker ব্যবহার

Resilience4j এর Circuit Breaker-টি Spring Boot-এর @CircuitBreaker এনোটেশন ব্যবহার করে সহজেই বাস্তবায়ন করা যায়।

import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class ApiService {

    private final RestTemplate restTemplate;

    public ApiService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @CircuitBreaker(name = "myService", fallbackMethod = "fallbackForFetchData")
    public String fetchData() {
        String url = "https://api.example.com/data";
        return restTemplate.getForObject(url, String.class);
    }

    // ফেইলিওর হলে এখানে আসবে
    public String fallbackForFetchData(Throwable throwable) {
        return "Fallback response: Service is currently unavailable.";
    }
}

ধাপ ৪: RestTemplate Bean কনফিগার করুন

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

ধাপ ৫: কন্ট্রোলার থেকে সার্ভিস কল করুন

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ApiController {

    private final ApiService apiService;

    public ApiController(ApiService apiService) {
        this.apiService = apiService;
    }

    @GetMapping("/data")
    public String getData() {
        return apiService.fetchData();
    }
}

ব্যাখ্যা

  1. Normal Behavior:
    • সার্ভিস থেকে ডেটা পাওয়া গেলে fetchData() কাজ করবে।
  2. Failure Handling:
    • যদি সার্ভিস ব্যর্থ হয় (ব্যর্থতার হার কনফিগার করা থ্রেশহোল্ড ছাড়িয়ে যায়), তখন সার্কিট ব্রেকার ওপেন হয়ে যাবে।
    • সার্কিট ওপেন হলে fallbackForFetchData() মেথড কল হবে।

Circuit Breaker এর States

  1. Closed: সার্কিট ব্রেকার সক্রিয় নয় এবং সব রিকোয়েস্ট অনুমোদিত।
  2. Open: ব্যর্থতার থ্রেশহোল্ড ছাড়ালে সার্কিট ব্রেকার ওপেন হয়ে যাবে এবং নতুন রিকোয়েস্ট প্রত্যাখ্যান করবে।
  3. Half-Open: নির্দিষ্ট সময় পর সার্কিট ব্রেকার কয়েকটি রিকোয়েস্ট অনুমোদন করবে। যদি রিকোয়েস্ট সফল হয়, সার্কিট ক্লোজ হয়ে যাবে।

উদাহরণ আউটপুট

  1. Success Case:

    {
        "data": "Actual data from API"
    }
    
  2. Fallback Case:

    {
        "data": "Fallback response: Service is currently unavailable."
    }
    

উপসংহার

Circuit Breaker Pattern:

  • সিস্টেমকে ব্যর্থতার প্রভাব থেকে রক্ষা করে।
  • রিকোয়েস্ট রেট সীমিত রাখে।
  • রিকভারি প্রক্রিয়া সহজ করে।

Resilience4j Spring Boot-এর সাথে Circuit Breaker বাস্তবায়নের জন্য সহজ এবং শক্তিশালী সমাধান।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion